1. Technical Field
The present invention relates generally to the field of data processing systems and, more specifically to a computer system, method, and product for dynamically allocating resources within a microprocessor.
2. Description of Related Art
Microprocessors include many different types of resources, such as memory, registers, counters, execution units, and other resources. These resources can be allocated to processes. Some of these resources are dedicated to specific types of processes while others are general purpose resources available for any process.
One process requiring the available of a resource is the performance monitoring of the microprocessor itself. Modern microprocessors typically contain specialized logic to monitor performance related events within the processor. These events include frequently occurring events such as processor cycles, dispatching of instructions, and completion of instructions. These events also includes more rarely occurring events such as flush or stall operations.
Within the performance monitor are one or more performance monitor counters. The performance monitor counters are used to count the number of particular types of events that occur during a performance test. In known systems there is a one-to-one correspondence between an event type and the counter allocated to count events of that event type, i.e. a counter will be allocated to count events of only one type during a performance test. The number of different types of events that might need to be monitored is almost always greater than the number of available counters.
In many cases, the events to be monitored occur only very rarely. For these very rare events, a counter must be allocated that might never be used. By requiring a dedicated counter for each type of event, the total number of events that may be monitored is limited by the number of performance counters.
Therefore, a need exists for a method, system, and product for dynamically allocating resources so that a resource is allocated only for those processes that actually need a resource.